/**********************************************************************************************************
                                天穹飞控 —— 致力于打造中国最好的多旋翼开源飞控
                                Github: github.com/loveuav/BlueSkyFlightControl
                                技术讨论：bbs.loveuav.com/forum-68-1.html
 * @文件     faultDetect.c
 * @说明     飞控系统故障检测
 * @版本  	 V1.0
 * @作者     BlueSky
 * @网站     bbs.loveuav.com
 * @日期     2018.05
**********************************************************************************************************/
#include "faultDetect.h"

static uint8_t error[ERROR_NUM];
static uint8_t warnning[WARNNING_NUM];

/**********************************************************************************************************
*函 数 名: FaultDetectInit
*功能说明: 故障检测初始化
*形    参: 无
*返 回 值: 无
**********************************************************************************************************/
void FaultDetectInit(void)
{
    uint16_t i;

    for(i=0; i<ERROR_NUM; i++)
    {
        error[i] = 0;
    }

    for(i=0; i<WARNNING_NUM; i++)
    {
        warnning[i] = 0;
    }
    
    FaultDetectSetWarnning(SYSTEM_INITIALIZING);
}

/**********************************************************************************************************
*函 数 名: FaultDetectSetError
*功能说明: 设置错误标志
*形    参: 错误类型
*返 回 值: 无
**********************************************************************************************************/
void FaultDetectSetError(uint16_t error_type)
{
    error[error_type] = 1;
}

/**********************************************************************************************************
*函 数 名: FaultDetectResetError
*功能说明: 重置错误标志
*形    参: 错误类型
*返 回 值: 无
**********************************************************************************************************/
void FaultDetectResetError(uint16_t error_type)
{
    error[error_type] = 0;
}

/**********************************************************************************************************
*函 数 名: FaultDetectSetWarnning
*功能说明: 设置警告标志
*形    参: 警告类型
*返 回 值: 无
**********************************************************************************************************/
void FaultDetectSetWarnning(uint16_t warnning_type)
{
    warnning[warnning_type] = 1;
}

/**********************************************************************************************************
*函 数 名: FaultDetectResetWarnning
*功能说明: 重置警告标志
*形    参: 警告类型
*返 回 值: 无
**********************************************************************************************************/
void FaultDetectResetWarnning(uint16_t warnning_type)
{
    warnning[warnning_type] = 0;
}

/**********************************************************************************************************
*函 数 名: FaultDetectGetErrorStatus
*功能说明: 获取错误状态 1：有错误 0：正常
*形    参: 错误类型
*返 回 值: 无
**********************************************************************************************************/
uint8_t FaultDetectGetErrorStatus(uint16_t error_type)
{
    return error[error_type];
}

/**********************************************************************************************************
*函 数 名: FaultDetectGetWarnningStatus
*功能说明: 获取警告状态 1：有警告 0：正常
*形    参: 警告类型
*返 回 值: 无
**********************************************************************************************************/
uint8_t FaultDetectGetWarnningStatus(uint16_t warnning_type)
{
    return warnning[warnning_type];
}

/**********************************************************************************************************
*函 数 名: FaultDetectGetError
*功能说明: 获取所有错误状态量
*形    参: 无
*返 回 值: 错误状态量数组指针
**********************************************************************************************************/
uint8_t* FaultDetectGetError(void)
{
    return error;
}

/**********************************************************************************************************
*函 数 名: FaultDetectWarnning
*功能说明: 获取所有错误状态量
*形    参: 无
*返 回 值: 警告状态量数组指针
**********************************************************************************************************/
uint8_t* FaultDetectGetWarnning(void)
{
    return warnning;
}



















